From e7b9a93ed4fe987bb3cc830668c3705a7eafe9ae Mon Sep 17 00:00:00 2001 From: "kaf24@localhost.localdomain" Date: Sat, 19 Aug 2006 14:28:10 +0100 Subject: [PATCH] [XENBUS] Allow user of xenbus_read_driver_state() to distinguish absence of state field in xenstore by returning XenbusStateUnknown rather than XenbusStateClosed. Signed-off-by: Keir Fraser --- linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c | 5 ++--- linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c | 3 +-- linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c | 2 +- linux-2.6-xen-sparse/drivers/xen/blktap/xenbus.c | 3 +-- linux-2.6-xen-sparse/drivers/xen/netback/xenbus.c | 3 +-- linux-2.6-xen-sparse/drivers/xen/pciback/xenbus.c | 1 + linux-2.6-xen-sparse/drivers/xen/pcifront/xenbus.c | 1 + linux-2.6-xen-sparse/drivers/xen/tpmback/xenbus.c | 6 +----- linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c | 2 +- linux-2.6-xen-sparse/include/xen/xenbus.h | 2 +- 10 files changed, 11 insertions(+), 17 deletions(-) diff --git a/linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c b/linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c index 68079cb56a..71c7dd3a00 100644 --- a/linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c +++ b/linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c @@ -343,7 +343,6 @@ static void backend_changed(struct xenbus_device *dev, case XenbusStateInitialising: case XenbusStateInitWait: case XenbusStateInitialised: - case XenbusStateUnknown: break; case XenbusStateConnected: @@ -354,10 +353,10 @@ static void backend_changed(struct xenbus_device *dev, tpmif_set_connected_state(tp, 0); break; + case XenbusStateUnknown: case XenbusStateClosed: - if (tp->is_suspended == 0) { + if (tp->is_suspended == 0) device_unregister(&dev->dev); - } xenbus_switch_state(dev, XenbusStateClosed); break; } diff --git a/linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c b/linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c index 0f268c9e33..931f7bf4bc 100644 --- a/linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c +++ b/linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c @@ -331,12 +331,11 @@ static void frontend_changed(struct xenbus_device *dev, xenbus_switch_state(dev, XenbusStateClosing); break; + case XenbusStateUnknown: case XenbusStateClosed: device_unregister(&dev->dev); break; - case XenbusStateUnknown: - case XenbusStateInitWait: default: xenbus_dev_fatal(dev, -EINVAL, "saw state %d at frontend", frontend_state); diff --git a/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c b/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c index bee1da5ff5..9f180fd01f 100644 --- a/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c +++ b/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c @@ -256,10 +256,10 @@ static void backend_changed(struct xenbus_device *dev, DPRINTK("blkfront:backend_changed.\n"); switch (backend_state) { - case XenbusStateUnknown: case XenbusStateInitialising: case XenbusStateInitWait: case XenbusStateInitialised: + case XenbusStateUnknown: case XenbusStateClosed: break; diff --git a/linux-2.6-xen-sparse/drivers/xen/blktap/xenbus.c b/linux-2.6-xen-sparse/drivers/xen/blktap/xenbus.c index 1b901f5b0c..e0158592cf 100644 --- a/linux-2.6-xen-sparse/drivers/xen/blktap/xenbus.c +++ b/linux-2.6-xen-sparse/drivers/xen/blktap/xenbus.c @@ -267,12 +267,11 @@ static void tap_frontend_changed(struct xenbus_device *dev, xenbus_switch_state(dev, XenbusStateClosing); break; + case XenbusStateUnknown: case XenbusStateClosed: device_unregister(&dev->dev); break; - case XenbusStateUnknown: - case XenbusStateInitWait: default: xenbus_dev_fatal(dev, -EINVAL, "saw state %d at frontend", frontend_state); diff --git a/linux-2.6-xen-sparse/drivers/xen/netback/xenbus.c b/linux-2.6-xen-sparse/drivers/xen/netback/xenbus.c index a0e3961234..9da8e3b4be 100644 --- a/linux-2.6-xen-sparse/drivers/xen/netback/xenbus.c +++ b/linux-2.6-xen-sparse/drivers/xen/netback/xenbus.c @@ -260,14 +260,13 @@ static void frontend_changed(struct xenbus_device *dev, xenbus_switch_state(dev, XenbusStateClosing); break; + case XenbusStateUnknown: case XenbusStateClosed: if (be->netif != NULL) kobject_uevent(&dev->dev.kobj, KOBJ_OFFLINE); device_unregister(&dev->dev); break; - case XenbusStateUnknown: - case XenbusStateInitWait: default: xenbus_dev_fatal(dev, -EINVAL, "saw state %d at frontend", frontend_state); diff --git a/linux-2.6-xen-sparse/drivers/xen/pciback/xenbus.c b/linux-2.6-xen-sparse/drivers/xen/pciback/xenbus.c index 86223a35ec..0026753381 100644 --- a/linux-2.6-xen-sparse/drivers/xen/pciback/xenbus.c +++ b/linux-2.6-xen-sparse/drivers/xen/pciback/xenbus.c @@ -181,6 +181,7 @@ static void pciback_frontend_changed(struct xenbus_device *xdev, xenbus_switch_state(xdev, XenbusStateClosing); break; + case XenbusStateUnknown: case XenbusStateClosed: dev_dbg(&xdev->dev, "frontend is gone! unregister device\n"); device_unregister(&xdev->dev); diff --git a/linux-2.6-xen-sparse/drivers/xen/pcifront/xenbus.c b/linux-2.6-xen-sparse/drivers/xen/pcifront/xenbus.c index 4fd9262f9d..c5fca76cf9 100644 --- a/linux-2.6-xen-sparse/drivers/xen/pcifront/xenbus.c +++ b/linux-2.6-xen-sparse/drivers/xen/pcifront/xenbus.c @@ -225,6 +225,7 @@ static void pcifront_backend_changed(struct xenbus_device *xdev, pcifront_try_disconnect(pdev); break; + case XenbusStateUnknown: case XenbusStateClosed: dev_warn(&xdev->dev, "backend went away!\n"); pcifront_try_disconnect(pdev); diff --git a/linux-2.6-xen-sparse/drivers/xen/tpmback/xenbus.c b/linux-2.6-xen-sparse/drivers/xen/tpmback/xenbus.c index cb72a2ec36..4ee5c5bbfe 100644 --- a/linux-2.6-xen-sparse/drivers/xen/tpmback/xenbus.c +++ b/linux-2.6-xen-sparse/drivers/xen/tpmback/xenbus.c @@ -34,7 +34,6 @@ struct backend_info /* watch front end for changes */ struct xenbus_watch backend_watch; - enum xenbus_state frontend_state; }; static void maybe_connect(struct backend_info *be); @@ -143,8 +142,6 @@ static void frontend_changed(struct xenbus_device *dev, struct backend_info *be = dev->dev.driver_data; int err; - be->frontend_state = frontend_state; - switch (frontend_state) { case XenbusStateInitialising: case XenbusStateInitialised: @@ -162,13 +159,12 @@ static void frontend_changed(struct xenbus_device *dev, be->instance = -1; break; + case XenbusStateUnknown: case XenbusStateClosed: device_unregister(&be->dev->dev); tpmback_remove(dev); break; - case XenbusStateUnknown: - case XenbusStateInitWait: default: xenbus_dev_fatal(dev, -EINVAL, "saw state %d at frontend", diff --git a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c index 24661a861b..97505ae459 100644 --- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c +++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c @@ -274,7 +274,7 @@ enum xenbus_state xenbus_read_driver_state(const char *path) enum xenbus_state result; int err = xenbus_gather(XBT_NIL, path, "state", "%d", &result, NULL); if (err) - result = XenbusStateClosed; + result = XenbusStateUnknown; return result; } diff --git a/linux-2.6-xen-sparse/include/xen/xenbus.h b/linux-2.6-xen-sparse/include/xen/xenbus.h index af36ef614b..909900f650 100644 --- a/linux-2.6-xen-sparse/include/xen/xenbus.h +++ b/linux-2.6-xen-sparse/include/xen/xenbus.h @@ -274,7 +274,7 @@ int xenbus_free_evtchn(struct xenbus_device *dev, int port); /** * Return the state of the driver rooted at the given store path, or - * XenbusStateClosed if no state can be read. + * XenbusStateUnknown if no state can be read. */ enum xenbus_state xenbus_read_driver_state(const char *path); -- 2.30.2